<?php
include_once('../funciones/funciones_php.php');
$tipo_encomienda_nuevo = $_POST['tipo_encomienda'];
$orden_flete = $_POST['orden_flete'];
$codigo_barra = $_POST['codigo_barra'];


$numero_factura = $_REQUEST['numero_factura'];


conectar();
$n_tipo = sprintf("SELECT id_encomienda,cantidad
                       FROM encomienda
                       WHERE id_tipo_encomienda = '%d'
                       AND id_orden_flete = '%d'",pg_escape_string($tipo_encomienda_nuevo),pg_escape_string($orden_flete));
$consulta_n = pg_query($n_tipo) or die("ERROR");
$cantidad_encomiendas = pg_num_rows($consulta_n);

if($cantidad_encomiendas != 0)
{
    $datos = pg_fetch_array($consulta_n);

    $id_encomienda_nueva = $datos['id_encomienda'];
    $cantidad_act = $datos['cantidad'];

    $nueva_cantidad_1 = $cantidad_act + 1;

    $upd_enc = sprintf("UPDATE encomienda
                        SET cantidad = '%d',num_factura = '%s'
                        WHERE id_encomienda = '%d'",pg_escape_string($nueva_cantidad_1),pg_escape_string($numero_factura),pg_escape_string($id_encomienda_nueva));
    $cons_upd_enc = pg_query($upd_enc) or die ("ERROR");

    //Consulta la cantidad de encomiendas con respecto al paquete acual
    $cons_act = sprintf("SELECT encomienda.id_encomienda,encomienda.cantidad
                         FROM encomienda, detalle_encomienda
                         WHERE detalle_encomienda.codigo_barra = '%s'
                         AND encomienda.id_encomienda = detalle_encomienda.id_encomienda",pg_escape_string($codigo_barra));
    $consulta_actual = pg_query($cons_act) or die ("ERROR");
    $datos_act = pg_fetch_array($consulta_actual);

    $cantidad_actual = $datos_act['cantidad'];
    $nueva_cantidad_2 = $cantidad_actual - 1;
    $id_encomienda_actual = $datos_act['id_encomienda'];

    if($nueva_cantidad_2 == 0)
    {
        $pg_delete = sprintf("DELETE FROM encomienda
                              WHERE id_encomienda = '%d'",pg_escape_string($id_encomienda_actual));
        $delete = pg_query($pg_delete) or die ("ERROR");
    }
    else
    {
        $upd_enc = sprintf("UPDATE encomienda
                            SET cantidad = '%d'
                            WHERE id_encomienda = '%d'",pg_escape_string($nueva_cantidad_2),pg_escape_string($id_encomienda_actual));
        $cons_upd_enc = pg_query($upd_enc) or die ("ERROR");
    }
    $update_detalle = sprintf("UPDATE detalle_encomienda
                               SET id_encomienda = '%d'
                               WHERE codigo_barra = '%s'",pg_escape_string($id_encomienda_nueva),pg_escape_string($codigo_barra));
    $guardar_update_detalle = pg_query($update_detalle) or die ("ERROR");
}
else
{
    //Insertar un nuevo id encomienda con cantidad 1 nuevo
    $pg = sprintf("INSERT into encomienda(id_orden_flete,cantidad,id_tipo_encomienda,num_factura,tipo_pago)
                   VALUES ('%d','%d','%d','%s','%s')",pg_escape_string($orden_flete),pg_escape_string(1),pg_escape_string($tipo_encomienda_nuevo),pg_escape_string($numero_factura),pg_escape_string(' '));
    $cons = pg_query($pg) or die ("Error al ingresar encomienda");

    //Restar 1 a la cantidad de encomiendas del tipo actual
    $cant = sprintf("SELECT encomienda.cantidad,encomienda.id_encomienda
                     FROM encomienda, detalle_encomienda
                     WHERE detalle_encomienda.codigo_barra = '%s'
                     AND encomienda.id_encomienda = detalle_encomienda.id_encomienda",pg_escape_string($codigo_barra));
    $cons_cant = pg_query($cant) or die ("Error en la consulta");

    $reg_cant = pg_fetch_array($cons_cant);

    $id_actual_enc = $reg_cant['id_encomienda'];
    $cantidad_actual = $reg_cant['cantidad'];
    $nueva_cantidad = $cantidad_actual - 1;

    if($nueva_cantidad == 0)
    {
        $pg_delete = sprintf("DELETE FROM encomienda
                              WHERE id_encomienda = '%d'",pg_escape_string($id_actual_enc));
        $delete = pg_query($pg_delete) or die ("ERROR");
    }
    else
    {
        $upd_enc = sprintf("UPDATE encomienda
                            SET cantidad = '%d'
                            WHERE id_encomienda = '%d'",pg_escape_string($nueva_cantidad),pg_escape_string($id_actual_enc));
        $cons_upd_enc = pg_query($upd_enc) or die ("ERROR");
    }


    //Consulta el id_encomienda recien agregado y actualiza el detalle_encomienda
    $pg_cons = sprintf("SELECT id_encomienda
                 FROM encomienda
                 WHERE id_orden_flete = '%d'
                 AND id_tipo_encomienda = '%d'",pg_escape_string($orden_flete),pg_escape_string($tipo_encomienda_nuevo));
    $cons_id = pg_query($pg_cons) or die ("ERROR");

    $reg_id = pg_fetch_array($cons_id);

    $nuevo_id_encommienda = $reg_id['id_encomienda'];

    $update_detalle = sprintf("UPDATE detalle_encomienda
                           SET id_encomienda = '%d'
                           WHERE codigo_barra = '%s'",pg_escape_string($nuevo_id_encommienda),pg_escape_string($codigo_barra));
    $guardar_update_detalle = pg_query($update_detalle) or die ("ERROR");
}

echo "<script>alert('Encomienda guardada correctamente');</script>";
print "<meta http-equiv=Refresh content=\"0 ; url=panel_operacion.php\">";

?>